//
//  ConfigurazioneVC.m
//  iTeVe
//
//  Created by Pedro Gonzalez on 15/05/14.
//  Copyright (c) 2014 SISI Software. All rights reserved.
//

#import "ConfigurazioneVC.h"
#import "FMDBDataAccess.h"
#import "Deposito.h"
#import "Agente.h"

@interface ConfigurazioneVC () <UITextViewDelegate, UITextFieldDelegate, BSKeyboardControlsDelegate, UIPickerViewDelegate, UIPickerViewDataSource>

@property (nonatomic, strong) BSKeyboardControls *keyboardControls;

@end



@implementation ConfigurazioneVC

@synthesize lblAgente, lblDepositoSede, lblDepositoVendita, lblDocPredefinito, lblEmail, lblIndirizzo, lblPartitaIvaCF, lblRagioneSociale, lblSitoWeb, lblTelefono, lblTestoDocumenti;

@synthesize tfAgente, tfAgenteDescrizione, tfDepositoSede, tfDepositoSedeDescrizione, tfDepositoVendita, tfDepositoVenditaDescrizione, tfDocPredefinito, tfDocPredefinitoDescrizione, tfEmail, tfIndirizzo, tfPartitaIvaCF, tfRagioneSociale, tfSitoWeb, tfTelefono;

@synthesize tvTestoDocumenti;

@synthesize depositi, agenti, tipimov;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
    
    agenti = [db getAgenti];
    depositi = [db getDepositi];
    tipimov = [db getTipiMov];
    
    tfRagioneSociale.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"ragionesociale"];
    tfIndirizzo.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"indirizzo"];
    tfPartitaIvaCF.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"partitaivacf"];
    tfTelefono.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"telefono"];
    tfEmail.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"email"];
    tfSitoWeb.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"sitoweb"];
    tvTestoDocumenti.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"testodocumenti"];
    tfDepositoSede.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"depositosede"];
    tfDepositoVendita.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"depositovendita"];
    tfAgente.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"agente"];
    tfDocPredefinito.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"documentopredefinito"];
    
    tvTestoDocumenti.layer.borderWidth = 1.0f;
    tvTestoDocumenti.layer.cornerRadius = 8;
    tvTestoDocumenti.layer.borderColor = [[UIColor lightGrayColor] CGColor];
    
    [self viewDatiDepositoSede:tfDepositoSede.text];
    [self viewDatiDepositoVendita:tfDepositoVendita.text];
    [self viewDatiAgente:tfAgente.text];
    [self viewDatiDocpredefinito:tfDocPredefinito.text];
    
    // controllo tastiera next/previous
    NSArray *fields = @[ tfRagioneSociale, tfIndirizzo, tfPartitaIvaCF, tfTelefono, tfEmail, tfSitoWeb, tvTestoDocumenti, tfDepositoSede, tfDepositoVendita, tfAgente, tfDocPredefinito];
    
    [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
    [self.keyboardControls setDelegate:self];
    
    //
    tfDepositoSede.inputView = self.depositiSedePicker;
    tfDepositoSede.inputAccessoryView = self.accessoryView;
    //
    tfDepositoVendita.inputView = self.depositiVenditaPicker;
    tfDepositoVendita.inputAccessoryView = self.accessoryView;
    //
    tfAgente.inputView = self.agentiPicker;
    tfAgente.inputAccessoryView = self.accessoryView;
    //
    tfDocPredefinito.inputView = self.docpredefinitoPicker;
    tfDocPredefinito.inputAccessoryView = self.accessoryView;


}



-(void)viewDatiAgente:(NSString*)codage
{
    if (codage.length==0) {
        return;
    }
    
    
    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
    Agente* agente = [db getAgentexCodice:codage];
    
    tfAgente.text = codage;
    tfAgenteDescrizione.text = agente.descrizione;
    
}

-(void)viewDatiDepositoSede:(NSString*)coddep
{
    if (coddep.length==0) {
        return;
    }
    
    
    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
    Deposito* deposito = [db getDepositoxCodice:coddep];
    
    tfDepositoSede.text = coddep;
    tfDepositoSedeDescrizione.text = deposito.descrizione;
    
}


-(void)viewDatiDepositoVendita:(NSString*)coddep
{
    if (coddep.length==0) {
        return;
    }
    
    
    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
    Deposito* deposito = [db getDepositoxCodice:coddep];
    
    tfDepositoVendita.text = coddep;
    tfDepositoVenditaDescrizione.text = deposito.descrizione;
    
}

-(void)viewDatiDocpredefinito:(NSString*)codmov
{
    if (codmov.length==0) {
        return;
    }
    
    
    FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
    Tipimov* tipomov = [db getTipiMovxCodice:codmov];
    
    tfDocPredefinito.text = codmov;
    tfDocPredefinitoDescrizione.text = tipomov.descrizione;
    
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];

}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    if (self.isMovingFromParentViewController || self.isBeingDismissed) {
        [self salvaConfigurazione];
    }
}

-(void)salvaConfigurazione
{

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 
    [defaults setObject:tfRagioneSociale.text forKey:@"ragionesociale"];
    [defaults setObject:tfIndirizzo.text forKey:@"indirizzo"];
    [defaults setObject:tfPartitaIvaCF.text forKey:@"partitaivacf"];
    [defaults setObject:tfTelefono.text forKey:@"telefono"];
    [defaults setObject:tfEmail.text forKey:@"email"];
    [defaults setObject:tfSitoWeb.text forKey:@"sitoweb"];
    [defaults setObject:tvTestoDocumenti.text forKey:@"testodocumenti"];
    [defaults setObject:tfDepositoSede.text forKey:@"depositosede"];
    [defaults setObject:tfDepositoVendita.text forKey:@"depositovendita"];
    [defaults setObject:tfAgente.text forKey:@"agente"];
    [defaults setObject:tfDocPredefinito.text forKey:@"documentopredefinito"];
    [defaults synchronize];
    
    
}


- (UIPickerView *)agentiPicker {
    if ( agentiPicker == nil ) {
        agentiPicker = [[UIPickerView alloc] init];
        agentiPicker.delegate = self;
        agentiPicker.dataSource = self;
        agentiPicker.showsSelectionIndicator = YES;
        [agentiPicker reloadAllComponents];
    }
    
    return agentiPicker;
}


- (UIPickerView *)depositiSedePicker {
    if ( depositiSedePicker == nil ) {
        depositiSedePicker = [[UIPickerView alloc] init];
        depositiSedePicker.delegate = self;
        depositiSedePicker.dataSource = self;
        depositiSedePicker.showsSelectionIndicator = YES;
        [depositiSedePicker reloadAllComponents];
    }
    
    return depositiSedePicker;
}

- (UIPickerView *)depositiVenditaPicker {
    if ( depositiVenditaPicker == nil ) {
        depositiVenditaPicker = [[UIPickerView alloc] init];
        depositiVenditaPicker.delegate = self;
        depositiVenditaPicker.dataSource = self;
        depositiVenditaPicker.showsSelectionIndicator = YES;
        [depositiVenditaPicker reloadAllComponents];
    }
    
    return depositiVenditaPicker;
}


- (UIPickerView *)docpredefinitoPicker {
    if ( docpredefinitoPicker == nil ) {
        docpredefinitoPicker = [[UIPickerView alloc] init];
        docpredefinitoPicker.delegate = self;
        docpredefinitoPicker.dataSource = self;
        docpredefinitoPicker.showsSelectionIndicator = YES;
        [docpredefinitoPicker reloadAllComponents];
    }
    
    return docpredefinitoPicker;
}



// accessoryView

- (UIToolbar *)accessoryView {
    if ( accessoryView == nil ) {
        accessoryView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        
        UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                    target:self
                                                                                    action:@selector(doneButton)];
        
        UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                       target:self
                                                                                       action:@selector(cancelButton)];
        
        doneButton.title = NSLocalizedString(@"TESTO_CONFERMA", @"Conferma...");
        cancelButton.title = NSLocalizedString(@"TESTO_ANNULLA", @"Annulla...");
        
        [accessoryView setItems:[NSArray arrayWithObjects:cancelButton, doneButton, nil]];
    }
    
    return accessoryView;
}


- (void)doneButton {
    

    if ( [tfDepositoSede isFirstResponder] ) {
        
        NSInteger row = [self.depositiSedePicker selectedRowInComponent:0];
        Deposito *deposito = depositi[row];
        [self viewDatiDepositoSede:deposito.coddep];
        [tfDepositoSede resignFirstResponder];
        
    } else if ( [tfDepositoVendita isFirstResponder] ) {
        
        NSInteger row = [self.depositiVenditaPicker selectedRowInComponent:0];
        Deposito *deposito = depositi[row];
        [self viewDatiDepositoVendita:deposito.coddep];
        [tfDepositoVendita resignFirstResponder];
        
    } else if ( [tfAgente isFirstResponder] ) {
        
        NSInteger row = [self.agentiPicker selectedRowInComponent:0];
        Agente *agente = agenti[row];
        [self viewDatiAgente:agente.codage];
        [tfAgente resignFirstResponder];

        
    } else if ( [tfDocPredefinito isFirstResponder] ) {
        
        NSInteger row = [self.docpredefinitoPicker selectedRowInComponent:0];
        Tipimov *tipomov = tipimov[row];
        [self viewDatiDocpredefinito:tipomov.codmov];
        [tfDocPredefinito resignFirstResponder];

        
    }
    
    
}


- (void)cancelButton {
    //
    if ( [tfDepositoSede isFirstResponder] ) {
        
        [tfDepositoSede resignFirstResponder];
        
    } else if ( [tfDepositoVendita isFirstResponder] ) {
        
        [tfDepositoVendita resignFirstResponder];
        
    } else if ( [tfAgente isFirstResponder] ) {
        
        [tfAgente resignFirstResponder];

    } else if ( [tfDocPredefinito isFirstResponder] ) {
        
        [tfDocPredefinito resignFirstResponder];

        
    }
    
}


// picker view

- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    
    NSString *descrizione = @"";
    if ( [pickerView isEqual:depositiSedePicker] ||  [tfDepositoSede isFirstResponder]  ) {
        
        Deposito *deposito = depositi[row];
        descrizione = [NSString stringWithFormat:@"%@ - %@", deposito.coddep, deposito.descrizione];
        
    } else if ([pickerView isEqual:depositiVenditaPicker] ||   [tfDepositoVendita isFirstResponder] ) {
        
        Deposito *deposito = depositi[row];
        descrizione = [NSString stringWithFormat:@"%@ - %@", deposito.coddep, deposito.descrizione];
        
    } else if ([pickerView isEqual:agentiPicker] ||   [tfAgente isFirstResponder] ) {
        
        Agente *agente = agenti[row];
        descrizione = [NSString stringWithFormat:@"%@ - %@", agente.codage, agente.descrizione];

        
    } else if ([pickerView isEqual:docpredefinitoPicker] ||   [tfDocPredefinito isFirstResponder] ) {
        
        Tipimov *tipomov = tipimov[row];
        descrizione = [NSString stringWithFormat:@"%@ - %@", tipomov.codmov, tipomov.descrizione];

    }
    return descrizione;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    long quanti = 0;
    
    if ( [pickerView isEqual:depositiSedePicker] ||  [tfDepositoSede isFirstResponder]  ) {
        
        quanti = [depositi count];
        
    } else if ([pickerView isEqual:depositiVenditaPicker] ||   [tfDepositoVendita isFirstResponder] ) {
        
        quanti = [depositi count];
        
    } else if ([pickerView isEqual:agentiPicker] ||  [tfAgente isFirstResponder] ){
        
        quanti = [agenti count];
        
    } else if ([pickerView isEqual:docpredefinitoPicker] ||  [tfDocPredefinito isFirstResponder] ){
        
        quanti = [tipimov count];

    }
    
    return quanti;
}


@end
